#include <iostream>
#include <unordered_map>
#include <queue>

using namespace std;

int main() {

	int n;
	string str;
	cin>>n>>str;
	unordered_map<char,int> has;
	for(int i=0;i<str.size();++i){
		++has[str[i]];
	}
	priority_queue<pair<int,char>> q;
	for(auto& item:has){
		q.push({item.second,item.first});
	}
	string sRet;
	while(q.size()){
		auto [x,y]=q.top();
		q.pop();
		if(sRet.empty() || sRet.back()!=y){
			sRet+=y;
			--x;
		}
		else{
			if(q.empty()){
				break;
			}
			auto [nx,ny]=q.top();
			q.pop();
			sRet+=ny;
			--nx;
			if(nx){
				q.push({nx,ny});
			}
		}
		if(x){
			q.push({x,y});
		}
	}
	if(sRet.size()==str.size()){
		cout<<"yes"<<endl;
		cout<<sRet;
	}
	else{
		cout<<"no"<<endl;
	}
	
	return 0;
}
